<?php

include ("PreguntaDAO.php");

class EncuestaDAO {
    //put your code here

    // Campos
    // id, estado,

    var $pregDao;

    function __construct(){
        
        $this->pregDao = new PreguntaDAO();
        
    }


    function persistir($encuesta){

        #mysql_real_scape_string

        $estado = mysql_real_escape_string($encuesta->getEstado());
        $id_usuario = mysql_real_escape_string($encuesta->getUsuario());
        $titulo = mysql_real_escape_string($encuesta->getTitulo());
        $tipo = mysql_real_escape_string($encuesta->getTipo());
        
        //INSERT ENCUESTA
        $query = "INSERT INTO encuestas (estado, id_usuario, titulo, tipo)
                  VALUES  ('$estado','$id_usuario','$titulo', '$tipo')";

        $result = mysql_query($query) or die("Error de SQL");

        $id_encuesta = mysql_insert_id();

        $hash = md5($id_encuesta);

        //INSERT HASH
        $query = "UPDATE encuestas SET hash='$hash' WHERE id='$id_encuesta' LIMIT 1";

        $result = mysql_query($query) or die("Error de SQL");

        //INSERT PREGUNTAS
        foreach ($encuesta->preguntas as $pregunta){
            $pregunta->setId_encuesta($id_encuesta);
            $this->pregDao->persistir($pregunta);
        }

        //INSERT CONTROLADORES
        foreach($encuesta->getControladores() as $c){
            $id_c = $c->getId();
            $query = "INSERT INTO encuestas_controladores
                    VALUES (NULL, $id_encuesta, $id_c)";
            mysql_query($query) or die("Err SQL $query");
        }

        return $id_encuesta ;

    }

    function modificar($encuesta){

        $estado = mysql_real_escape_string($encuesta->getEstado());
        $id_usuario = mysql_real_escape_string($encuesta->getIdUsuario());
        $titulo = mysql_real_escape_string($this->getTitulo());
        $id = mysql_real_escape_string($this->getId());

        $query = "UPDATE encuestas SET (estado='$estado', id_usuario='$id_usuario', titulo='$titulo')
                  WHERE (id=$id)
                  LIMIT 1";

        $result = mysql_query($query) or die("Error de SQL");

        // Hacer drop de todas las preguntas y cargar las nuevas

        $this->pregDao->eliminarPorIdEncuesta($encuesta->getId());

        foreach($encuesta->preguntas as $pregunta){
            $this->pregDao->persistir($pregunta);
        }


    }

    function eliminar($id){

        $this->pregDao->eliminarPorIdEncuesta($id);

        $query = "DELETE FROM encuestas WHERE id='$id' LIMIT 1";
        $result = mysql_query($query) or die("Error de SQL");
        

    }

    function traerPorId($idEncuesta){

        $query = "SELECT * FROM encuestas WHERE id='$idEncuesta' LIMIT 1";
        //echo $query;
        $result = mysql_query($query) or die("Error de SQL");

        $temp=mysql_fetch_array($result);

        $id = $temp["id"];
        $estado = $temp["estado"];
        $id_usuario = $temp["id_usuario"];
        $titulo = $temp["titulo"];
        $tipo = $temp['tipo'];
        $hash = $temp['hash'];
        
        $arrayPreguntas = $this->pregDao->traerPorIdEncuesta($idEncuesta);
        
        return new Encuesta($id, $estado, $titulo, $id_usuario, $arrayPreguntas, $hash, $tipo);


    }

    function traerPorHash($hash){

        $query = "SELECT * FROM encuestas WHERE hash='$hash' LIMIT 1";
        $result = mysql_query($query) or die("Error de SQL");

        if(mysql_num_rows($result) == 0){
            return null;
        }
        
        $temp=mysql_fetch_array($result);

        $id = $temp["id"];
        $estado = $temp["estado"];
        $id_usuario = $temp["id_usuario"];
        $titulo = $temp["titulo"];
        $tipo = $temp["tipo"];

        $arrayPreguntas = $this->pregDao->traerPorIdEncuesta($id);

        return new Encuesta($id, $estado, $titulo, $id_usuario, $arrayPreguntas,"",$tipo);


    }

    function traerLista($offset="0", $cantidad="1000"){

        $arrayEncuestas = array();
        $query = "SELECT encuestas.*, usuarios.nombre FROM encuestas
                JOIN usuarios ON(encuestas.id_usuario = usuarios.id)
                LIMIT $offset,$cantidad";


        $resultSet = mysql_query($query) or die("Error de SQL $query");

        while($temp = mysql_fetch_assoc($resultSet)){

            $id = $temp["id"];
            $estado = $temp["estado"];
            $titulo = $temp["titulo"];
            $hash = $temp["hash"];
            $usuario = new Usuario("", $temp["id_usuario"], "", "", $temp['nombre']);

            array_push($arrayEncuestas, new Encuesta($id, $estado, $titulo, $usuario, null, $hash));
        }

        return $arrayEncuestas;

    }

    public function totalEncuestas(){
        $query = "SELECT count(*) FROM encuestas";
        $res = mysql_query($query) or die("ERR SQL");
        $fila = mysql_fetch_array($res);
        return $fila[0];
    }

    function traerListaControlada($id_usuario, $offset="0", $cantidad="1000"){

        $arrayEncuestas = array();
        $query = "SELECT encuestas.*, usuarios.nombre FROM encuestas
                JOIN usuarios ON (encuestas.id_usuario = usuarios.id)
                JOIN encuestas_controladores ON (encuestas.id = encuestas_controladores.id_encuesta)
                WHERE encuestas.id_usuario = $id_usuario
                LIMIT $offset,$cantidad";


        $resultSet = mysql_query($query) or die("Error de SQL $query");

        while($temp = mysql_fetch_assoc($resultSet)){

            $id = $temp["id"];
            $estado = $temp["estado"];
            $titulo = $temp["titulo"];
            $hash = $temp["hash"];
            $usuario = new Usuario("", $temp["id_usuario"], "", "", $temp['nombre']);

            array_push($arrayEncuestas, new Encuesta($id, $estado, $titulo, $usuario, null, $hash));
        }

        return $arrayEncuestas;

    }

    public function totalEncuestasControladas($id_usuario){
        $query = "SELECT count(*) FROM encuestas
                JOIN encuestas_controladores ON (encuestas.id = encuestas_controladores.id_encuesta)
                WHERE encuestas.id_usuario = $id_usuario";

        $res = mysql_query($query) or die("ERR SQL");
        $fila = mysql_fetch_array($res);
        return $fila[0];

    }
}
?>
